/* 
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

var error = false;

var errorBox;
var numeroPasos;

function getForm(){    
    cifrarPasswords();
    return $('#wizardForm').serialize();
}

function cifrarPasswords(){
    var pswd = document.getElementById('password');
    var pswd_r = document.getElementById('password_repeat');
    var firma = document.getElementById('firmaPassword');

    /**
     * Se omite el cifrado por medio de javascript
     * pues no lo hace de manera correcta
     */
    if(pswd != null)
        pswd.value = pswd.value;//pswd.value = hex_md5(pswd.value);
    if(pswd_r != null)
        pswd_r.value = pswd_r.value;//pswd_r.value = hex_md5(pswd_r.value);
    if(firma != null)
        firma.value = firma.value;//firma.value = hex_md5(firma.value);
    
}

function submitByEntity(entity){
    setErrorBoxLastStep();
    if(error == false){
        submitWizardForm(getFileByEntity(entity));
    }else{
        renderearFracaso("");
    }
    
}

function guiObjectHandler(json_object){
    object = getJsonObject(json_object);
    if(object != null){
        loadGuiData(object); //Carga los datos para despligue en la interfaz (combos, etc)
        loadEntityData(object);
    }else{
        //TODO: pensar
    }

    return object;
}

function getEntity(entity, id){
    variables = "id="+id;
    object = getDataFromServer(getFileByEntity(entity), "GET", variables);
    loadEntityData(object);
}


function loadEntityData(object){
    if(object.tryEntityObject && !object.hasEntityObject){
        //TODO: se intento cargar pero no hubo exito
        alert("Es imposible cargar los datos del usuario");
    }else if(object.hasEntityObject){
        if(object.isMultiple){
            loadGuiEntity(object.entities);
        }else{
            loadGuiEntity(object.entityObject);
        }
        
    }
}



function limpiarSelect(id){
    $("#" + id).find("option").remove();
}
function continuar(){
    limpiarFracaso();
}

function limpiarFracaso(){
    document.getElementById("errMsg_" + errorBox).innerHTML="";
    document.getElementById("errMsg_" + errorBox).style.display='none';
}

function remoteValidation(entity, action){
    file = getFileByEntity(entity);
    variables = getForm() + getAction(action);
    return remotePetition(file, variables);
}


function remotePetition(file, variables){
    respuesta = getJsonObject(ajaxAction(file, variables));
    flag = true;
    if(respuesta == null){
        flag = false;
        renderearFracaso("Imposible validar en el servidor");
    }else if(! respuesta.exito){
       flag = respuesta.exito;
       renderearFracaso(respuesta.mensaje);
    }

    return flag;
}

function remoteOperation(entity, action, id){
    file = getFileByEntity(entity);

    variables = getForm() + getAction(action);
    variables += "&id=" + id;

    return remotePetition(file, variables);
}


function getDataFromServer(file, action, variables){
    variables += getAction(action);
    return getJsonObject(ajaxAction(file, variables));
}


function sendForm(validacion, indice, entidad){
    indice++;
    if(validacion && indice == numeroPasos){
        submitByEntity(entidad);
    }
}
function getAction(action){
    return "&action="+action;
}

function getFileByEntity(entity){
    return "/org/sitis/ema/Wizards/"+ entity +"/controller/"+ entity+"Controller.php";
}
function submitWizardForm(file){
    respuesta = getJsonObject(ajaxAction(file, getForm()));
    exito = false;
    if(respuesta != null){
       if(respuesta.exito){
           renderearExito(respuesta.mensaje);
           exito = true;
           submitExito();
       }else{
           renderearFracaso(respuesta.mensaje);
           submitFracaso();
       }
    }else{
        renderearFracaso("Imposible enviar los datos.");
        submiFracaso();
    }
    return exito;
}
function submitExito(){
   // alert("Comportamiento posterior al exito");
   document.getElementById("end").style.display="none";

   if(document.getElementById("orchestraMode").value != ""){
       doOrchestrating();
   }
}

function setErrorBox(idx){
    errorBox = (idx + 1);
}

function setErrorBoxLastStep(){
    errorBox = numeroPasos;
}

function setStepsInfo(){
    steps = $("ul > li > a", $('.wiz-container'));
    numeroPasos = steps.length;
}


function renderearFracaso(mensaje){
   document.getElementById("errMsg_" + errorBox).innerHTML=mensaje;
   box = "#errMsg_" + errorBox;
   $(box).effect("highlight");
}

function renderearExito(mensaje){
    alert(mensaje);
}
//uso estas cosas en vez de jquery pq ya las tenia...
function getJsonObject(data){
    if(data != ""){
        return eval("("+ data +")");
    }else{
        return null;
    }
}
function ajaxAction(page, variables){
    ajax=objetoAjax();
    ajax.open("POST", page, false);
    ajax.setRequestHeader('Content-Type','application/x-www-form-urlencoded; charset=ISO-8859-1');
//     ajax.setRequestHeader('Content-Type','application/x-www-form-urlencoded; charset=UTF-8');
    ajax.send(variables);
    //divContenido.innerHTML= '<img src="/org/sitis/common/util/imag/loading.gif">';
    return ajax.responseText;
}

function objetoAjax(){
    var xmlhttp=false;
    try {
        xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (e) {
        try {
            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
        } catch (E) {
            xmlhttp = false;
        }
    }
    if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
        xmlhttp = new XMLHttpRequest();
    }
    return xmlhttp;
}